The spread of the Internet and the general availability of data connections is changing the way media is provided and used. In particular, conventional television and/or radio (i.e.—audio) services are increasingly giving way to digital network-based streaming media on demand and/or live streaming media. Such streaming media content can be delivered through any digital network, such as a cable company's set top box-based network or a cellular data network, or increasingly, through the Internet. The delivery can be to any suitable rendering device, such as an Apple TV or an Xbox 360, connected to a television or monitor, or can be to a rendering device and display, such as an Internet TV or a mobile device, such as player software executing on an Apple iPad, a laptop computer, a mobile phone, etc.
In most cases, streaming media is delivered in “chunks” through the network to the player. Each chunk will typically contain the video and/or audio information required to render a selected duration, such as ten seconds, of the media at a given resolution or playback quality. When a player plays a program, it downloads a manifest that defines the chunks making up the program and the player downloads the first one or more chunks of the program specified by the manifest into a player cache and begins playback with those chunks while the next needed chunks, as defined by the manifest, are being downloaded through the network. In this manner, playback of the program can start before the entire program has been downloaded.
Live programs are broadcast in a similar manner but with a manifest that is dynamically updated, having content added to the manifest as the live event transpires. Such live programs are broadcast with a slight delay (e.g.—fifteen seconds) and the manifest is updated during the streaming of the program to include URI's or other indicators of the newly added content.
As the market shifts towards delivery of content via such streaming media delivery systems, the ability to advertise in such streaming media has also offered new opportunities to advertisers and content deliverers. For example, it is desirable, when media is requested by a viewer, to select the advertisements to be shown and/or played during the delivery of the program (i.e.—targeted advertisements), the advertisements being selected based upon any suitable criteria, such as: viewer demographics, including where the player/viewer is located and/or the particular viewer watching the content; the type of rendering device (mobile versus fixed) that the content is being played on; etc. In fact, a wide range of demographic and other criteria could be applied to the selection of which advertisements (or other content) will be shown to which viewers and the full range of such considerations is beyond the scope of the present invention.
However, the need to define a manifest, or equivalent, before beginning playback of a streaming program has limited the ability to dynamically insert content into streaming media to only the simplest cases. Any such content, whether advertising or other content, to be played during the program must presently be specified at the time of creation of the manifest and this severely limits the benefits and advantages that would otherwise be available in a streaming media system. Thus, the media delivery system can, based upon the viewer's reported location (for example, from their IP address), select from a set of manifests which have been previously created for the requested program. The system can select an existing manifest suitable for viewers in the particular location, but the system can not respond dynamically to many other demographic, time or other properties of interest to an advertiser or other content provider.
The need to have predefined manifests, or manifests created at download time, which specify all content to be rendered limits the desired ability to dynamically select content to display to the user after the manifest has been downloaded. Similar problems exist with dynamic manifests for live programs, as each rendering device receives the same manifest, thus limiting the ability to dynamically insert content to different rendering devices.
For example, it may be desired to have an interactive advertisement campaign which is responsive to the viewer's activities. Such a campaign can comprise displaying an advertisement for a special deal on delivery pizza and, in such a case, it may be desired to define the campaign such that, if the viewer responds to the advertisement and orders a pizza, no subsequent advertisements are shown for that pizza deal in the streamed media program and subsequent available advertisement playback times in the streamed media program can be used for other advertisers. However, if the viewer does not respond to the first advertisement for the pizza, the same advertisement or related advertisements for the delivery pizza can be played to the viewer in subsequent available advertisement playback times. While the benefits of such a campaign are many, to date it has not been possible to implement such a campaign.
Further, presently if it is desired to change the advertisements to be played during a streaming media program, it is necessary to create a new manifest. Thus, if a manifest is created today for a program, playback of the same program next week will likely require a new manifest to be created at that time to include advertisements which are then relevant, instead of those advertisements which were relevant today.
Even if it were possible to create and recreate manifests, as needed, when a program is first downloaded to define the advertisement content of a program, such a system may not be able to cope with the extreme demands which can be placed on it. For example, in a live streaming media program (such as a major sporting event) millions of viewers may simultaneously (or near simultaneously) request the program, and thus millions of manifests would need to be created at the same time if they were to provide for targeted advertisements.
Accordingly, it is desired to have a system and method which provides for the dynamic insertion of content, such as targeted advertisements, into streaming media.